#!/local/tools/repository/php-4.4.4/bin/php
<?php

$params=array();

################################################################################
#
################################################################################
function get_date($separator)
{
  if (!defined($separator))
    {
      $separator="/";
    }
  
  $now_date = date("Y".$separator."m".$separator."d");
  
  return $now_date;
}

################################################################################
#
################################################################################
function get_time($separator)
{
  if (!defined($separator))
    {
      $separator=":";
    }
  
  $now_time = date("H".$separator."i".$separator."s");
  
  return $now_time;
}

################################################################################
#
################################################################################
function error($msg)
{
  print get_date("/")." ".get_time(":")." [ERROR] " .$msg;
}

################################################################################
#
################################################################################
function info($msg)
{
  print get_date("/")." ".get_time(":")." [INFO] " .$msg;
}

################################################################################
#
################################################################################
function warning($msg)
{
  print get_date("/")." ".get_time(":")." [WARNING] " .$msg;
}

################################################################################
#
################################################################################
function db_connect($host,$user,$pwd,$sys_dbname,$port)
{
  global $params;
  
  #print_r($params);  
  
  $strhost=$host;
  if($port && $port!=3306)
    $strhost=$strhost.":".$port;
  $conn = @mysql_connect($strhost,$user,$pwd);
  if (!$conn || !@mysql_select_db($sys_dbname,$conn)) 
    {
      return 0;
    }
  
  return $conn;
}

################################################################################
#
################################################################################
function db_close($conn)
{
  return @mysql_close($conn);
}

################################################################################
#
################################################################################
function complzero($str)
{
  //print $str."\n";
  $lenghtofstr=strlen($str);
  //print $lenghtofstr. " ";  
  $index=0;
  for($i=0;$i<(8-$lenghtofstr);$i++)
    {
      $index.=0;
    }
  
  $index.=$str;
  
  return $index;
}

################################################################################
#
################################################################################
function create_cfg_file($cfgs)
{
  //print_r($cfgs);
  $newcfg = "";
  
  $newcfg.= "@V1.0;?\n";
  $counter=1;
  //return;
  foreach ($cfgs as $cfg)
    {
      //print_r($cfg);
      # write line 1
      $index=complzero($counter++);
      $newcfg.="!".$index.";**;?\n";
      # write line 2  
      $sizeofpts=sizeof($cfg->PTS);
      #print "sizeofpts ".$sizeofpts."\n";
      $nbcolumn_line2=$sizeofpts+1;
      $newcfg.="$".$nbcolumn_line2.";".ereg_replace("\*","[X=*]",$cfg->COMREF);
      
      #print_r($cfg->PTS);
      //foreach($cfg->PTS as $P);
      //$cfg->PTS[$i]="";
      for($i=0;$i<sizeof($cfg->PTS);$i++)
	{
	  //$strpts.=";".$cfg[$counter]->PTS[$i];
	  //print $cfg->PTS[$i]."\n";
	  if (isset($cfg->PTS[$i]))
	  $newcfg.= ";".$cfg->PTS[$i];
	}
      $newcfg.="?\n";
      # write line 3
      $newcfg.= "&16;".$cfg->ALGOCODE.";***;";
      if($cfg->PARAM == "N/A")
	{
	  $newcfg.="**;";
	}
      else
	{
	  $newcfg.=$cfg->PARAM.";";
	}
      if($cfg->PERSOFILE == "N/A")
	{
	  $newcfg.="**;;**;**;**;**;**;**;**;**;**;**;**;**;**;**?\n";
	}
      else
	{
	  //if ( preg_match ( '/mepd/',$cfg->PERSOFILE) != 0 )
	  //{
	  //$path="\\mepd\\";
	  //}
	  //else
	  //{
	  //$path="\\abs\\";
	  //}
	  $path="\\files\\";
            #$newcfg.="s:\\mepd\\".$cfg->PERSOFILE.";;**;**;**?\n";
	    $newcfg.="s:".$path.$cfg->PERSOFILE.";;**;**;**;**;**;**;**;**;**;**;**;**;**;**?\n";
	}
      //return;
    }
  $newcfg.= "#**;0;?\n";
  // $newcfg."\n";
  return $newcfg;
}

################################################################################
#
################################################################################
function db_query($qstring,$conn) 
{
  if(!($ret=@mysql_query($qstring,$conn)))
    {
      return 0;
    }
  return $ret;
}

################################################################################
#
################################################################################
function db_fetch_object($qhandle)
{
  return @mysql_fetch_object($qhandle,MYSQL_ASSOC);
}

################################################################################
#
################################################################################
function db_numrows($qhandle)
{
  if ($qhandle) {
    return @mysql_numrows($qhandle);
  } else {
    return 0;
  }
}

################################################################################
#
################################################################################
function parse_args($args)
{
  global $params;
  
  $err=0;
  #print_r($args);
  #print_r($params);

  foreach ($args as $arg)
    {
      if ( ($arg == "-h") || ($arg == "--help"))
	{
	  print_usage($args);
	  exit(0);
	}
    }
  
   #print_r($params);
  
  if (!isset($args[3]))
    {
      error("Missing arguments.\n");
      $err++;
    }
  else
    {
      $params["EXECUTABLE_NAME"]=array_shift($args);
      $params["DBNAME"]=array_shift($args);
      $params["DBLOGIN"]=array_shift($args);
      $params["DBPASSWORD"]=array_shift($args);
    }
  
  if ($err>0)
    {
      error("Aborting due to previous error(s). Use -h or --help for usage.\n");
      return 1;
    }
  
     #print $this->INPUTFILE. "\n";

  return 0;
}

################################################################################
#
################################################################################
function print_usage($args)
{
  print "USAGE: ".$args[0]." [-h|--help] <dbname> <dblogin> <dbpasswd>\n";
}

################################################################################
#
################################################################################
function process()
{
  global $params;
  //print_r($params);

  info("Processing ...\n");      
  $conn=db_connect("localhost",$params["DBLOGIN"],$params["DBPASSWORD"],$params["DBNAME"],"3306");
  if($conn == 0)
    {
      error("Failed to connect to db\n");
      exit(103);
    }
  
  info("Getting all configs from db ...\n");      
  $sql="SELECT * FROM commercial_reference";
  	  
  $rs=db_query($sql,$conn);
  $row_cnt=mysql_numrows($rs);
  if(!$row_cnt)
    {
      error("Failed to retrieve configs from DB. Aborting ...\n");
      return;
    }
  
  $cfg=array();
  
  while($db_cfg=db_fetch_object($rs))
    {
      $db_cfg->PERSOFILE=$db_cfg->perso_file;
      $db_cfg->COMREF=$db_cfg->ref;
      
      // getting algo code and paramBDDUT4
      $comname=split("-",$db_cfg->ref);
      $comname[0]=substr($comname[0],0,-1);
      
      $sqlSelect="SELECT * FROM commercial_name AS a LEFT JOIN paramBDDUT4 AS b ON a.paramBDDUT4_id = b.id LEFT JOIN algo_code AS c ON a.algo_code_id = c.id WHERE commercial_name='".$comname[0]."'";
      $rsSelect=db_query($sqlSelect,$conn);
      $rowcnt=mysql_numrows($rsSelect);
      
      if(!$rowcnt)
	{
	  error("Failed to retrieve algo code and paramBDDUT4 for ref $db_cfg->COMREF. Skipping ...\n");
	  continue;
	}
      
      while($db_algo_param=db_fetch_object($rsSelect))
	{
	  $db_cfg->ALGOCODE=$db_algo_param->algo_code;
	  $db_cfg->PARAM=$db_algo_param->paramBDDUT4;
	}
      
      // getting PTS list
      $sqlSelectPts="SELECT * FROM `commercial_reference` AS a LEFT JOIN `commercial_reference_pts` AS b ON a.id = b.commercial_reference_id LEFT JOIN `pts` AS c ON b.pts_id = c.id WHERE ref = '$db_cfg->ref' and perso_file='$db_cfg->perso_file' and status=1";
      $rsSelectPts=db_query($sqlSelectPts,$conn);
      $rowcntpts=mysql_numrows($rsSelectPts);
      
      if(!$rowcntpts)
	{
	  error("Failed to retrieve PTS for ref $db_cfg->COMREF. Skipping ...\n");
	  continue;
	}

      while($db_pts=db_fetch_object($rsSelectPts))
	{
	  $db_cfg->PTS[]=$db_pts->pts;
	}
      if($db_cfg->PTS !=0)
	{      
	  array_push($cfg,$db_cfg);
	}
      
    } // while($db_cfg=db_fetch_object($rs))
  
  info("Generating new config file ...\n");
  $newcfg=create_cfg_file($cfg); 
  
  if($newcfg == "")
    {
      error("Failed to generate new config file\n");
      exit(106);
    }

  $basedir="/data/samba_share/BdD_UUT/";
  $outputfile="ftp1.cfg";
  $tmp_outputfile="/tmp/".$outputfile.".tmp";

  // create new config file
  $handle = @fopen($tmp_outputfile, "w");
  fwrite($handle, $newcfg);   
  fclose($handle);

  // backup current config file
  $datetime=date("YmdHis");
  $cmd="mv ".$basedir.$outputfile." ".$basedir.$datetime."_".$outputfile;
  exec($cmd);

  $cmd="mv -f ".$tmp_outputfile." ".$basedir.$outputfile;
  exec($cmd);
  $cmd="pushd .;cd /data/samba_share;unix2dos ".$basedir.$outputfile.";popd";
  exec($cmd);
  
  if (!db_close($conn))
    {
      warning("Could not discconnect from the Server.\n");
      return 0;
    }
  info("End of process.\n");      
}

################################################################################
#
################################################################################
function intro()
{
  global $params;
  
  #$params["EXECUTABLE_NAME"]="ftp1.cfg.php";
  
  
  return 0;
}

################################################################################
#
################################################################################
function main($args)
{
  global $params;
  
  if (intro()!=0)
    {
      print "Error while executing intro ... Aborting.\n";
      exit(101);
    }
  
  if (parse_args($args)!=0)
    {
      error("Error while parsing arguments ... Aborting.\n");
      exit(102);
    }
  
  process();
  
  #print_r($params);
}

#$argv="";
main($argv);
exit(0);
?>
